Emacs 對於編輯 Ruby 程式的功能
$gem install pry pry-doc
$gem install rufo
$gem install rubocop
編輯 rubocop 設定檔 ~/.rubocop.yml
AllCops:
Exclude:
- 'db/**/*'
- 'config/**/*'
- 'script/**/*'
(use-package ruby-mode
:ensure t
:mode ("\\.rb\\'" "Rakefile\\'" "Gemfile\\'" "Berksfile\\'" "Vagrantfile\\'")
:config
(use-package rvm
:ensure t
:config
(rvm-use-default))
(add-hook 'ruby-mode-hook (lambda ()
(add-to-list (make-local-variable 'company-backends)
'(company-robe))))
)
當檔案為 .rb, Rakefile, Gemfile... 時啟動 ruby-mode,當使用 rvm 時,內定使用 default version,加入 company-robe 為 company-backends
(use-package inf-ruby
:ensure t
:hook (ruby-mode . inf-ruby-minor-mode)
:config
)
(use-package ruby-electric
:ensure t
:hook (ruby-mode . ruby-electric-mode)
)
inf-ruby 是可以在 Emacs 環境下,直譯 ruby 的 REPL (Read-Eval-Print-Loop) 的功能,內定使用 Ctrl-c Ctrl-s
啟動, ruby-electric 可以自動為函式的區塊補 end
(use-package robe
:ensure t
:hook (ruby-mode . robe-mode)
:config
(defadvice inf-ruby-console-auto (before activate-rvm-for-robe activate)
(rvm-activate-corresponding-ruby))
)
robe 的使用較為複雜,它會需要先啟動 inf-ruby,藉著它來解析本地的 module,如果有Gemfile, Rakefile 等專案資訊, robe 可以使用 inf-ruby-console-auto 來自動啟動,如果只是單一程式,則必須使用 Ctrl-c Ctrl-s
掀啟動 inf-ruby 再用 Meta-x robe-start
來啟動
(use-package rubocop
:ensure t
:hook (ruby-mode . rubocop-mode)
)
(use-package rufo
:ensure t
:hook (ruby-mode . rufo-minor-mode)
)
只要將這兩個次模式 hook 到 ruby-mode 即可
(use-package projectile-rails
:ensure t
:hook (projectile-mode . projectile-rails-on)
)
projectile-rails 提供與先前介紹的 projectile 完美整合來編輯 Ruby on Rails 的專案
相關簡報:簡報
相關程式: Github 請下載到 ~/.emacs.d 下,啟動 Emacs 則會自動安裝套件
相關資訊; 請參考我的部落格